package vendas;

import estoque.Produto;
import excecoes.ProdutoInsuficienteException;
import excecoes.ValorNegativoException;

/**
 * Essa classe representa um item de uma venda
 *
 */

public class ItemVenda {
	
	private Produto produto;
	private int quantidade;
	private double valor; //preco do produto X quantidade
	
	/**
	 * Esse construtor recebe um produto e sua quantidade, e calcula o valor
	 * baseado no preco do produto e na sua quantidade
	 * 
	 * @param produto
	 * @param quantidade
	 * 
	 * @throws ProdutoInsuficienteException se a quantidade do produto no estoque for
	 * insuficiente
	 */
	public ItemVenda(Produto produto, int quantidade) throws ProdutoInsuficienteException, 
	ValorNegativoException{
		
		if(produto == null){
			
			throw new RuntimeException("produto nulo");
			
		}
		
		if(quantidade < 0){
			
			throw new ValorNegativoException("A quantidade deve ser maior ou igual a 0");
		}
		
		if(quantidade > produto.getQuantidade()){
			
			throw new ProdutoInsuficienteException("A quantidade informada e maior" +
					"do que a quantidade em estoque");
			
		}
		
		this.produto = produto;
		this.quantidade = quantidade;
		valor = produto.getPreco_venda() * quantidade;
		
	}

	public String toString(){
		
		return "Produto: \n" + produto.toString() +
				"\n\nQuantidade: " + quantidade + 
				"\nValor : " + valor;
		
	}
	
	//Metodos get
	
	public Produto getProduto() {
		return produto;
	}

	public int getQuantidade() {
		return quantidade;
	}

	public double getValor() {
		return valor;
	}
	
}
